package com.xuecheng.media.domain.model.entity;

import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;

import com.xuecheng.media.domain.model.FileUploadDo;
import com.xuecheng.media.domain.model.enums.AuditStatusEnum;
import com.xuecheng.media.domain.model.enums.FileStatusEnum;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;

/**
 * <p>
 * 媒资信息
 * </p>
 *
 * @author itcast
 */
@Data
@TableName("media_files")
public class MediaFiles implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 文件id,md5值
     */
    private String id;

    /**
     * 机构ID
     */
    private Long companyId;

    /**
     * 机构名称
     */
    private String companyName;

    /**
     * 文件名称
     */
    private String filename;

    /**
     * 文件类型（图片、文档，视频）
     */
    private String fileType;

    /**
     * 标签
     */
    private String tags;

    /**
     * 存储目录
     */
    private String bucket;

    /**
     * 存储路径
     */
    private String filePath;

    /**
     * 文件id
     */
    private String fileId;

    /**
     * 媒资文件访问地址
     */
    private String url;

    /**
     * 上传人
     */
    private String username;

    /**
     * 上传时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createDate;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime changeDate;

    /**
     * 状态,1:正常，0:不展示
     */
    private String status;

    /**
     * 备注
     */
    private String remark;

    /**
     * 审核状态
     */
    private String auditStatus;

    /**
     * 审核意见
     */
    private String auditMind;

    /**
     * 文件大小
     */
    private Long fileSize;


    public static MediaFiles getDefaultMediaFile(String filePath, FileUploadDo fileUploadDo, String fileMd5,
                                                 Long companyId, String bucketFiles) {
        LocalDateTime now = LocalDateTime.now();
        MediaFiles mediaFiles = new MediaFiles();
        mediaFiles.setId(fileMd5);
        mediaFiles.setCompanyId(companyId);
        mediaFiles.setCompanyName(""); //todo
        mediaFiles.setFilename(fileUploadDo.getFilename());
        mediaFiles.setFileType(fileUploadDo.getFileType());
        mediaFiles.setTags(fileUploadDo.getTags());
        mediaFiles.setBucket(bucketFiles);
        mediaFiles.setFilePath(filePath);
        mediaFiles.setFileId(fileMd5);
        mediaFiles.setUrl("/" + bucketFiles + "/" + filePath);
        mediaFiles.setUsername(fileUploadDo.getUsername());
        mediaFiles.setCreateDate(now);
        mediaFiles.setChangeDate(now);
        mediaFiles.setStatus(FileStatusEnum.NORMAL.getCode());
        mediaFiles.setRemark(fileUploadDo.getRemark());
        mediaFiles.setAuditStatus(AuditStatusEnum.DEFAULT.getCode());
        mediaFiles.setAuditMind(""); // todo
        mediaFiles.setFileSize(fileUploadDo.getFileSize());
        return mediaFiles;
    }
}
